package com.hello.auth.service;

import org.springframework.stereotype.Service;

import com.hello.common.core.constant.Constants;
import com.hello.common.core.constant.SecurityConstants;
import com.hello.common.core.utils.StringUtils;
import com.hello.common.core.utils.ip.IpUtils;
import com.hello.system.api.RemoteLogService;
import com.hello.system.api.dto.SysLogininforDTO;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

/**
 * 记录日志方法
 * 
 * @author hello
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class SysRecordLogService
{
    private final RemoteLogService remoteLogService;

    /**
     * 记录登录信息
     * 
     * @param username 用户名
     * @param status 状态
     * @param message 消息内容
     */
    public void recordLogininfor(String username, String status, String message)
    {
        SysLogininforDTO logininfor = new SysLogininforDTO();
        logininfor.setUserName(username);
        logininfor.setIpaddr(IpUtils.getIpAddr());
        logininfor.setMsg(message);
        
        // 日志状态
        if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER))
        {
            logininfor.setStatus(Constants.LOGIN_SUCCESS_STATUS);
        }
        else if (Constants.LOGIN_FAIL.equals(status))
        {
            logininfor.setStatus(Constants.LOGIN_FAIL_STATUS);
        }
        
        log.info("记录登录日志: 用户[{}], 状态[{}], 消息[{}]", username, status, message);
        remoteLogService.saveLogininfor(logininfor, SecurityConstants.INNER);
    }
}
